package com.vehicle.domains.vo.req.camera;

import com.vehicle.annotations.EnumValue;
import com.vehicle.enums.InOutTypeEnum;
import com.vehicle.enums.WorkModelEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotEmpty;
import lombok.Data;

@Data
@Schema(description = "新增相机设备请求参数")
public class AddCameraReq {

    @Schema(name = "videoPosition", description = "视频位置（如：东门入口、地下车库A区）")
    private String videoPosition;

    @Schema(name = "cameraIp", description = "相机IP地址")
    @NotEmpty(message = "相机IP不能为空")
    private String cameraIp;

    @Schema(name = "channelCode", description = "通信编码")
    private String channelCode;

    @Schema(name = "channelName", description = "通信名称")
    private String channelName;

    @Schema(name = "cameraCode", description = "相机编码（唯一标识）")
    @NotEmpty(message = "相机编码不能为空")
    private String cameraCode;

    @Schema(name = "inOutType", description = "出入口类型（IN-入口，OUT-出口）")
    @EnumValue(enumClass = InOutTypeEnum.class, message = "inOutType参数必须为IN/OUT")
    private String inOutType;

    @Schema(name = "displayIp", description = "显示屏IP地址")
    private String displayIp;

    @Schema(name = "isPictureRecording", description = "是否需要录像（true-是，false-否）")
    private Boolean isPictureRecording;

    @Schema(name = "workMode", description = "工作模式（DETECTED-识别，SNAP-抓拍）")
    @EnumValue(enumClass = WorkModelEnum.class, message = "工作模式 必须为DETECTED/SNAP")
    private String workMode;


    @Schema(name = "nvrAddressUrl", description = "NVR地址（如：rtsp://192.168.1.100:554/stream1）")
    private String nvrAddressUrl;

    @Schema(name = "entryExitCode", description = "道口编号（如：GATE-001）")
    private String entryExitCode;

    @Schema(name = "roadCode", description = "道闸编号（如：BARRIER-001）")
    private String roadCode;
}
